package peace.htmllooker.node.list
{
import flash.text.StyleSheet;

import peace.htmllooker.VerticalHtmlBox;
/**
 * 
 * 
 */
public class List extends VerticalHtmlBox
{
	protected static const BULLETS:Array = ["●", "○", "■", "□"];
	/**
	 * 
	 */	
	public var isOrdered:Boolean;
	/**
	 * 
	 */	
	protected var bullet:String;
	/**
	 * 
	 * @param xml
	 * @param css
	 * 
	 */
	public function List(xml:XML, css:StyleSheet)
	{
		super(xml, css);
	}
	
	override protected function init(xml:XML, css:StyleSheet):void
	{
		isOrdered = xml.localName() == "ol";
		
		if (!isOrdered)
		{
			bullet = getBullet(xml);
		}

		super.init(xml, css);
	}
	
	override protected function createChildren(xml:XML, css:StyleSheet):void
	{
		var i:XML;
		var orderCounter:int = 0;
		var item:ListItem;
		for each (i in xml.*)
		{
			// нам такое не надо
			if (i.localName() != "li") continue;
			
			item = new ListItem(i, css, isOrdered ? ++orderCounter + "." : bullet);
			container.add(item);
		}
	}
	/**
	 * Для ненумерованного списка проверяем, не является ли родитель списком. <br>
	 * Если да, то нам нужен другой тип буллита (следующий в BULLETS)
	 *  
	 * @return 
	 */	
	protected function getBullet (xml:XML):String
	{
		var counter:int = 0;
		
		var node:XML = xml;
		for (; node.parent() && node.parent().parent() && node.parent().parent().localName() == "ul";)
		{
			node = node.parent().parent();
			counter ++;
		}
		
		return BULLETS[counter % 4];
	}
	
}
}